/*
* @file app.h
* @brief This file contains the definition of the App class
* @author feiniao
* @version 1.0
* @date 2025-5-11
*/

#ifndef APP_H
#define APP_H

#include "app/stt.h"
#include "app/tts.h"
#include "app/my_wifi.h"
#include "app/global_msg.h"
#include "app/llm.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/semphr.h"
#include "bsp_key.h"
#include "Loudspeaker.h"


#define TAG "App"

class App {
private:
    MyWifi wifi;
    STT stt;
    LLM llm;
    TTS tts;
    BSP_KEY key;
    Global_msg gm;
    
    static void wifi_task(void* arg);
    static void stt_task(void* arg);
    static void llm_task(void* arg);
    static void tts_task(void* arg);
    
    static TaskHandle_t wifi_task_handle;
    
public:
    App();
    ~App();
    void run();
};

#endif